import axios from 'axios'
import router from '@/router'
import { ElLoading, ElMessage as message, ElMessageBox } from 'element-plus'
// import { getToken } from '@/utils/auth'
// import { useUserStore } from '@/store/user'

const codeMessage = {
  200: "服务器成功返回请求的数据。",
  201: "新建或修改数据成功。",
  202: "一个请求已经进入后台排队（异步任务）。",
  204: "删除数据成功。",
  400: "发出的请求有错误，服务器没有进行新建或修改数据的操作。",
  401: "用户没有权限（令牌、用户名、密码错误）。",
  403: "用户得到授权，但是访问是被禁止的。",
  404: "未找到此接口",
  405: "请求方法不正确",
  406: "请求的格式不可得。",
  410: "请求的资源被永久删除，且不会再得到的。",
  422: "当创建一个对象时，发生一个验证错误。",
  500: "服务器发生错误，请检查服务器。",
  502: "网关错误。",
  503: "服务不可用，服务器暂时过载或维护。",
  504: "网关超时。",
};

const service = axios.create(
  {
    // baseURL: process.env.VITE_APP_BASE_API, // 域名 没配置因为我们是放在一个服务器下
    //超时时间
    timeout: 1000 * 10,
    withCredentials: false, // 允许携带cookie中的参数
  }
)
// service.defaults.headers.common["Content-Type"] = "application/json";
// 请求拦截
service.interceptors.request.use(
  (config) => {
    // if (config.url === "/login") {
    //   return config;
    // }

    //直接修改不起作用，headType作为中间参数
    console.log('请求拦截', config);
    if (config.headType) {
      config.headers['Content-Type'] = config?.headType?.headers['Content-Type'] || 'application/json'
    }
    return config
  })
// 响应拦截
service.interceptors.response.use(
  (res) => {
    console.log('响应拦截', res);
    const { status, data } = res;
    if (status === "200" || status === 200) {
      //处理返回信息
      if (data.status === true || data.status === true) {
        data.message && message.success(data.message)
      } else {
        message.error(data.message || '接口返回状态失败')
      }
      return data;
    }
  },
  (error) => {
    if (error && error.response) {
      message.error(codeMessage[error.response.status])
    } else {
      message.error("服务器忙，请稍后重试");
    }
    return Promise.resolve(error.response);
  }
)


export default service